/*******************************************************************************
 * Copyright (c) 2012 Handypages.nl
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package nl.handypages.trviewer.parser;

public class TRContext implements Comparable <TRContext>{
	public static final String LIST_ALL_ID = "-999";
	private String name;
	private String description;
	private String id;
	private Integer index;
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the description
	 */
	public String getDescription() {
		return description;
	}
	/**
	 * @param description the description to set
	 */
	public void setDescription(String description) {
		this.description = description;
	}
	/**
	 * The id as specified in context element of the TRX file; this id does not seem to be used by TR.
	 * Instead the XPath of actions elements in the TRX file reference the order in which the 
	 * contexts are saved in the XML file. 
	 * @see getIndex()
	 * @author bhavers
	 * @return the id
	 */
	public String getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}
	/**
	 * The index is the array index of the context entry in the TRX file (starting at 1 
	 * instead of 0). Many XPath references in the file reference the array index 
	 * and not the id element; not sure why and it seems to be bad practice.
	 * @return the index
	 */
	public Integer getIndex() {
		return index;
	}
	public String getIndexAsString() {
		return Integer.toString(index);
	}
	/**
	 * @param index the index to set
	 */
	public void setIndex(Integer index) {
		this.index = index;
	}

	@Override
	public int compareTo(TRContext trc) {
		return this.name.compareTo(trc.name);
	}
}
